<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>$Title$</title>
    <style>
        .odd{
            color: yellow;
        }
    </style>
</head>
<body>
    <div th:text="${msg}"> 这是模板中自带的内容</div>
    <div th:utext="${msg}"> 这是模板中自带的内容</div>
<!--
    如果变量是一个对象 对象.属性名
-->
    <p>
        姓名: <span th:text="${person.name}"></span>

        学校: <span th:text="${person.address.schoolAddress}"></span>
    </p>

    <p>
        年龄:<span th:text="${person.getAge()}"></span>
        家  : <span th:text="${person.getAddress().getHomeAddress()}"></span>

    </p>

    <p th:if="${person.isStudent()}">学生</p>
    <p th:if="${!person.isStudent()}">不是学生</p>

    <p th:switch="${person.sex}">
        <span th:case="1">
            男
        </span>
        <span th:case="2">
            女
        </span>
    </p>
    <hr>
        字面量
    <p th:text="字面量"></p>
    <p th:text="'字 面 量'">字面量中含有空格时 字符必须包裹在单引号内</p>
    <p th:text="字面量+${person.name}">字面量和变量要用+连接</p>
    <p th:text="100+2+'list'+200+1">可以做数学运算和字符串拼接</p>
    <p th:text="100+2+'list'+(200+1)*200+1">可以做数学运算和字符串拼接</p>

    <hr>
        逻辑表达式
    <p th:if="5>2">这是为真显示的内容</p>
    <p th:if="5 &gt; 2">这是为真显示的内容 5 &gt; 2</p>
    <p th:if="(5>2) or 3<1">2个条件or 一个为真就显示</p>
    <p th:if="(5>2) and 3<1">2个条件or 一个为假就不显示</p>
    <p th:if="5!=2">5!=2</p>
    <p th:if="5 ne 2">5 ne 2</p>
    <p th:if="'abc' eq 'abc'"> abc ep abc</p>
    <hr>

    <a th:href="@{/test1(id=1,name=${person.name})}">test1</a><br>
    <a href="/test1?id=1&name=xiaoming">test1</a><br>
    <a th:href="@{./test2}">test2</a><br>
    <a th:href="@{../test3}">test3</a><br>

    <hr>
        追加文本
    <p> 追加文本的内容
        <span th:text="复试简历发上来看">dfskljslkfj</span>
    </p>
    <hr>
        算数运算

    <hr>
        比较运算

    <hr>
        三目运算
    <p th:class="5>2 ? 'even' : 'odd'">三目运算</p>
    <hr>
        修改属性
    <p class="p" th:attr="class=${person.name}">修改p标签的class属性</p>
    <p>
        <input type="text" name="username" value="lisi" th:attr="value=${person.name}">
        <input type="text" name="username" th:value="${person.name}">
    </p>
    <hr>
        循环遍历
    <ul th:each="name:${pNames}">
    <!--    每次遍历都会有一个Stat 状态对象 包含每次遍历的索引 奇偶 是否是最后一行和第一行 等等
        对象的名字不设置时  是  每次遍历的对象+Stat  exam：nameStat
    -->
        <li th:text="${name}" th:class="${nameStat.odd }?'odd':''"></li>
    </ul>
    <hr>
        内置工具类（日期、数字、字符串）
        <br>
    日期转换
    <p th:text="${myDate}"></p>
    <p th:text="${#dates.format(myDate,'yyyy-MM-dd HH:mm:ss')}"></p>
    <br>
    字符串截取
    <p th:text="${#strings.substring('fuyongqi',2,8)}"> </p>
    <br>
    数字保留位数
    <p th:text="${#numbers.formatDecimal(10.4793287,3,2)}"></p>

    el 表达式 pageScop requestScope sessionScope applicationScope

    <hr>
    基础对象
    <p th:text="${#request.getContextPath()}"></p>
    <p th:text="${#request.getAttribute('msg')}"></p>
    <p th:text="${#session.getAttribute('username')}"></p>

    <hr>
    内联表达式
    <p>[[${person.name}]]=====这是原来p标签的内容</p>
    <p>[[${msg}]]</p>
    <p>[(${msg})]</p>
    <br>
    局部变量
<!--
    声明变量时 在div 列表等标签中声明 不要在有特殊意义的标签中声明 h1~h6 p
-->
    <div th:with="p1=${person.name}">
        <span th:text="${p1}"></span>
    </div>


    <div th:with="firstPer=${pNames[0]}">
        <p>
            The name of the first person is <span th:text="${firstPer}">Julius Caesar</span>.
        </p>
    </div>
    <hr>
    模板片段 insert replace include（不推荐使用）
    <div style="color: red" th:insert="html/public::header">

    </div>
    <div style="color: red" th:replace="html/public::header">

    </div>
    <div style="color: red" th:include="html/public::header">

    </div>
    标准写法
    <div th:insert="~{html/public::footer(${pNames[0]},${pNames[1]})}">

    </div>
    <hr>
    删除片段
    all：删除包含标签及其所有⼦项。
    body：不要删除包含的标签，但删除所有的⼦项。
    tag：删除包含的标签，但不要删除其⼦项。
    all-but-first：删除除第⼀个包含标签之外的所有⼦代。
    none：什么都不做。 该值对于动态计算是有⽤的。
    <div style="color: red" th:insert="html/public::header" th:remove="all">

    </div>

    <div style="color: red" th:insert="html/public::footer(name1,name2)" th:remove="body">

    </div>

    <div style="color: red" th:insert="html/public::footer(name1,name2)" th:remove="tag">

    </div>

    <div style="color: red" th:insert="html/public::footer(name1,name2)" th:remove="all-but-first">

    </div>

    <div th:remove="all">
        文本信息
        <h3>标题</h3>
        <p>段落</p>
        <ul>
            <li>无序列表</li>
        </ul>
    </div>
    <div th:remove="body" class="body">
        文本信息
        <h3>标题</h3>
        <p>段落</p>
        <ul>
            <li>无序列表</li>
        </ul>
    </div>
    <div th:remove="tag" class="tag">
        文本信息
        <h3>标题</h3>
        <p>段落</p>
        <ul>
            <li>无序列表</li>
        </ul>
    </div>
    <div th:remove="all-but-first" class="all-but-first">
        文本信息
        <h3>标题</h3>
        <p>段落</p>
        <ul>
            <li>无序列表</li>
        </ul>
    </div>
    <br>
    inline
    <script th:inline="javascript">
        var pName = [[${person.name}]]
        console.log(pName);
    </script>











    <br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br>
</body>
</html>